/**
 *@category 
 *@author 邱磊
 *@date 2015年12月19日 下午2:47:06
 */
package com.hsnn.medstgmini.pro.base.controller;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.base.dict.service.DicAreaManager;
import com.hsnn.medstgmini.base.std.service.StdCompinfoManager;
import com.hsnn.medstgmini.pro.base.model.form.BaseDelrelationForm;
import com.hsnn.medstgmini.pro.base.service.BaseDelAreaRelManager;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.Pagination;

/**
 *@category 配送企业地区关系
 *@author 邱磊
 *@date 2015年12月19日 下午2:47:06
 *@param 
 */
@Controller
@RequestMapping("/baseDelAreaRel")
public class BaseDelAreaRelController {
	@Autowired
	private  HttpServletRequest request;
	@Autowired
	private  BaseDelAreaRelManager manager;
	@Autowired
	private  StdCompinfoManager compManager;
	@Value("#{sysProp['system.province']}")
    private String sysProvince;
	@Autowired
	private  DicAreaManager areaManager;
	@Value("#{sysProp['system.gzfjydel']}")
	private int gzfjydel;
	/**
	 * 
	 *@category 跳到中心端配送企业地区关系列表
	 *@author 邱磊
	 *@date 2015年12月19日 下午2:48:21
	 *@param 
	 *@return String
	 */
	@RequestMapping("/toBaseDelAreaRelListCenter")
	public String toBaseDelAreaRelListCenter(){
		return "/pro/base/baseDelAreaRelListCenter";
	}
	/**
	 * 
	 *@category 获取配送企业地区关系列表
	 *@author 邱磊
	 *@date 2015年12月19日 下午3:12:02
	 *@param 
	 *@return Pagination
	 */
	@RequestMapping("/getBaseDelAreaRelListCenterData")
	@ResponseBody
	public Pagination getBaseDelAreaRelListCenterData(){
		Pagination page = new Pagination(request);
		page.getConditions().put("compName", request.getParameter("compName"));
		page.getConditions().put("areaName", request.getParameter("areaName"));
		return manager.getBaseDelAreaRelListCenterData(page);
	}
	/**
	 * 
	 *@category 跳向新增配送企业与地区关系页面
	 *@author 邱磊
	 *@date 2015年12月19日 下午3:13:55
	 *@param 
	 *@return String
	 */
	@RequestMapping("/toAddDelAreaRel")
	public String toAddDelAreaRel(){
		return "/pro/base/addDelAreaRel";
	}
	/**
	 * 
	 *@category 跳向选择配送企业页面
	 *@author 邱磊
	 *@date 2015年12月19日 下午4:19:36
	 *@param 
	 *@return String
	 */
	@RequestMapping("/toSelectComp")
	public String toSelectComp(){
		return "/pro/base/selectComp";
	}
	/**
	 * 
	 *@category 获取配送企业列表
	 *@author 邱磊
	 *@date 2015年12月19日 下午3:15:26
	 *@param 
	 *@return Pagination
	 */
	@RequestMapping("/getCompList")
	@ResponseBody
	public Pagination getCompList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("compName", request.getParameter("compName"));
		page.getConditions().put("type", "2");
		return compManager.getCompList(page);
	}
	@RequestMapping("/toSelectArea")
	public String toSelectArea(){
		List<Map<String, Object>> list = areaManager.getAreaByFatherId(sysProvince);
		request.setAttribute("countryList", list);
		if(gzfjydel==Constants.GZFJYDEL){
			return "/pro/base/selectAreaWithCity";
		}
		return "/pro/base/selectArea";
	}
	/**
	 * 
	 *@category 获取地区列表
	 *@author 邱磊
	 *@date 2015年12月19日 下午3:28:29
	 *@param 
	 *@return Pagination
	 */
	@RequestMapping("/getAreaList")
	@ResponseBody
	public Pagination getAreaList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("fatherCode", request.getParameter("fatherCode"));
		page.getConditions().put("areaName", request.getParameter("areaName"));
		page.getConditions().put("compCode", request.getParameter("compCode"));
		return manager.getAreaList(page);
	}
	/**
	 * 
	 *@category 设置保存存配送企业区域信息
	 *@author 邱磊
	 *@date 2015年12月19日 下午5:59:16
	 *@param 
	 *@return Pagination
	 */
	@RequestMapping("/saveDelArea")
	@ResponseBody
	public Pagination saveDelArea(){
		Pagination page = new Pagination();
		page.getConditions().put("compCode", request.getParameter("compCode"));
		page.getConditions().put("areaIds", request.getParameter("areaIds"));
		SysUser user=(SysUser) request.getSession().getAttribute(Constants.USERINFO);
		page.getConditions().put("user", user.getId());
		try {
			manager.saveDelArea(page);
			page.setSuccess(true);
			page.setMsg("设置成功！");
		} catch (Exception e) {
			e.printStackTrace();
			page.setSuccess(false);
			page.setMsg("设置失败！");
		}
		return page;
	}
	/**
	 * 
	 *@category 删除配送企业区域信息
	 *@author 邱磊
	 *@date 2015年12月21日 下午6:37:58
	 *@param 
	 *@return Pagination
	 */
	@RequestMapping("/deleteDelArea")
	@ResponseBody
	public Pagination deleteDelArea(String array){
		Pagination page = new Pagination();
		try {
			if (array != null && !"".equals(array)) {
				Gson gson = new Gson();
				Type type = new TypeToken<List<BaseDelrelationForm>>() {}.getType();
				List<BaseDelrelationForm> list = gson.fromJson(array, type);
				if (list != null && !list.isEmpty()) {
					SysUser user=(SysUser) request.getSession().getAttribute(Constants.USERINFO);
					manager.deleteDelArea(list,user);
					page.setSuccess(true);
					page.setMsg("删除成功！");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			page.setSuccess(false);
			page.setMsg("删除失败！");
		}
		return page;
	}
	
	/**
	 * 
	 *@category 获取地区列表
	 *@author 邱磊
	 *@date 2015年12月19日 下午3:28:29
	 *@param 
	 *@return Pagination
	 */
	@RequestMapping("/getAreaListWithCity")
	@ResponseBody
	public Pagination getAreaListWithCity(){
		Pagination page = new Pagination(request);
		page.getConditions().put("fatherCode", request.getParameter("fatherCode"));
		page.getConditions().put("compCode", request.getParameter("compCode"));
		return manager.getAreaListWithCity(page);
	}
}
